home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 1 / Amiga Tools.iso / wb-tools / toolmanager / source / library / toolmanagerlib.h < prev    next >
C/C++ Source or Header  |  1994-06-06  |  8KB  |  246 lines

  1. /*
  2.  * ToolManagerLib.h  V2.1
  3.  *
  4.  * shared library main include file
  5.  *
  6.  * (c) 1990-1993 Stefan Becker
  7.  */
  8.  
  9. /* System include files */
  10. #include <exec/types.h>
  11. #include <exec/libraries.h>
  12. #include <exec/memory.h>
  13. #include <dos/dos.h>
  14. #include <dos/dostags.h>
  15. #include <devices/timer.h>
  16. #include <envoy/nipc.h>
  17. #include <envoy/errors.h>
  18. #include <graphics/gfxmacros.h>
  19. #include <intuition/intuitionbase.h>
  20. #include <libraries/iffparse.h>
  21. #include <libraries/locale.h>
  22. #include <libraries/toolmanager.h>
  23. #include <prefs/prefhdr.h>
  24. #include <rexx/errors.h>
  25. #include <workbench/workbench.h>
  26.  
  27. /* System function prototypes */
  28. #include <clib/alib_protos.h>
  29. #include <clib/commodities_protos.h>
  30. #include <clib/diskfont_protos.h>
  31. #include <clib/dos_protos.h>
  32. #include <clib/exec_protos.h>
  33. #include <clib/gadtools_protos.h>
  34. #include <clib/graphics_protos.h>
  35. #include <clib/icon_protos.h>
  36. #include <clib/iffparse_protos.h>
  37. #include <clib/intuition_protos.h>
  38. #include <clib/locale_protos.h>
  39. #include <clib/nipc_protos.h>
  40. #include <clib/rexxsyslib_protos.h>
  41. #include <clib/utility_protos.h>
  42. #include <clib/wb_protos.h>
  43.  
  44. /* System function pragmas */
  45. #include <pragmas/commodities_pragmas.h>
  46. #include <pragmas/diskfont_pragmas.h>
  47. #include <pragmas/dos_pragmas.h>
  48. #include <pragmas/exec_pragmas.h>
  49. #include <pragmas/gadtools_pragmas.h>
  50. #include <pragmas/graphics_pragmas.h>
  51. #include <pragmas/icon_pragmas.h>
  52. #include <pragmas/iffparse_pragmas.h>
  53. #include <pragmas/intuition_pragmas.h>
  54. #include <pragmas/locale_pragmas.h>
  55. #include <pragmas/nipc_pragmas.h>
  56. #include <pragmas/rexxsyslib_pragmas.h>
  57. #include <pragmas/utility_pragmas.h>
  58. #include <pragmas/wb_pragmas.h>
  59.  
  60. /* ANSI C include files */
  61. #include <stdlib.h>
  62. #include <string.h>
  63.  
  64. /* Compiler specific include files */
  65. #include <lists.h>     /* GetHead() et al. */
  66.  
  67. /* Project specific include files */
  68. #include "WBStart.h"
  69. #define CATCOMP_NUMBERS
  70. #define CATCOMP_STRINGS
  71. #include "/locale/toolmanager.h"
  72. #include "/ToolManagerPrefs.h"
  73.  
  74. /* Library <-> Handler IPC commands */
  75. #define TMIPC_AllocTMHandle  0
  76. #define TMIPC_FreeTMHandle   1
  77. #define TMIPC_CreateTMObject 2
  78. #define TMIPC_DeleteTMObject 3
  79. #define TMIPC_ChangeTMObject 4
  80.  
  81. /* Image object activation commands */
  82. #define IOC_DEACTIVE 1
  83. #define IOC_ACTIVE   2
  84. #define IOC_FULLANIM 3
  85. #define IOC_CONTANIM 4
  86.  
  87. /* Menu IDs */
  88. #define MENU_CLOSE 0
  89. #define MENU_QUIT  1
  90.  
  91. /* Hook function prototype */
  92. typedef ULONG (*HookFuncPtr)(__A0 struct Hook *, __A1 void *, __A2 void *);
  93.  
  94. /* Data structures */
  95. struct TMHandle {
  96.                  struct Message  tmh_Msg;      /* Library <-> Handler IPC */
  97.                  UBYTE           tmh_Command;  /* Library <-> Handler IPC */
  98.                  UBYTE           tmh_Type;     /* object type */
  99.                  char           *tmh_Object;   /* object name */
  100.                  struct TagItem *tmh_Tags;     /* object parameters */
  101.                  struct List     tmh_ObjectLists[TMOBJTYPES];
  102.                 };
  103.  
  104. struct TMObject {
  105.                  struct MinNode  tmo_Node;
  106.                  struct List     tmo_Links;
  107.                  char           *tmo_Name;
  108.                  UBYTE           tmo_Type;
  109.                  UBYTE           tmo_Pad;
  110.                  /* will be extended different for each object type */
  111.                 };
  112.  
  113. struct TMLink {
  114.                struct MinNode   tml_Node;
  115.                ULONG            tml_Size;     /* size of structure */
  116.                struct TMObject *tml_Linked;   /* linked object */
  117.                struct TMObject *tml_LinkedTo; /* obj. is linked to this obj. */
  118.                void            *tml_Active;   /* linked object is active */
  119.                /* will be extended different for each object type */
  120.               };
  121.  
  122. struct TMLinkImage { /* a link to an Image object */
  123.                     struct TMLink    tmli_Link;
  124.                     struct RastPort *tmli_RastPort; /* Draw images here */
  125.                     UWORD            tmli_LeftEdge; /* (x,y) in RastPort */
  126.                     UWORD            tmli_TopEdge;
  127.                     UWORD            tmli_Width;    /* Image size */
  128.                     UWORD            tmli_Height;
  129.                     struct Image    *tmli_Normal;
  130.                     struct Image    *tmli_Selected;
  131.                    };
  132.  
  133. struct TMTimerReq {
  134.                    struct timerequest  tmtr_Request;
  135.                    struct TMLink      *tmtr_Link;
  136.                   };
  137.  
  138. /* Library internal function prototypes */
  139. /* config.c */
  140. void ReadConfig(void);
  141. void FreeConfig(void);
  142.  
  143. /* dockobj.c */
  144. void HandleIDCMPEvents(void);
  145.  
  146. /* execobj.c */
  147. BOOL CopyPathList(struct PathList **pla, struct PathList **plc,
  148.                   struct PathList *oldpl);
  149. void FreePathList(struct PathList *pla);
  150.  
  151. /* handler.c */
  152. __geta4 void HandlerEntry(void);
  153.  
  154. /* locale.c */
  155. void GetLocale(void);
  156. void FreeLocale(void);
  157.  
  158. /* objects.c */
  159. BOOL InternalCreateTMObject(struct TMHandle *handle, char *object, ULONG type,
  160.                             struct TagItem *tags);
  161. BOOL CallDeleteTMObject(struct TMObject *tmobj);
  162. BOOL InternalDeleteTMObject(struct TMHandle *handle, char *object);
  163. BOOL InternalChangeTMObject(struct TMHandle *handle, char *object,
  164.                             struct TagItem *tags);
  165. struct TMObject *AllocateTMObject(ULONG size);
  166. struct TMLink *AddLinkTMObject(struct TMHandle *handle, char *object,
  167.                                ULONG type, struct TMObject *linkedto);
  168. void RemLinkTMObject(struct TMLink *tml);
  169. void DeleteAllLinksTMObject(struct TMObject *tmobj);
  170. void CallActivateTMObject(struct TMLink *tml, void *args);
  171.  
  172. /* readiff.c */
  173. struct TMImageData *ReadIFFData(char *name);
  174. void FreeIFFData(struct TMImageData *tmid);
  175.  
  176. /* rexx.c */
  177. BOOL SendARexxCommand(char *command, ULONG len);
  178.  
  179. /* safety.c */
  180. void SafeDeleteCxObjAll(struct CxObj *cxobj, struct TMLink *tml);
  181. void SafeRemoveAppMenuItem(void *appmenu, struct TMLink *tml);
  182. void SafeRemoveAppIcon(void *appicon, struct TMLink *tml);
  183. void SafeRemoveAppWindow(void *appwin, struct TMLink *tml);
  184.  
  185. /* tmhandle.c */
  186. BOOL InternalAllocTMHandle(struct TMHandle *handle);
  187. BOOL InternalFreeTMHandle(struct TMHandle *handle);
  188.  
  189. /* workbench.c */
  190. BOOL GetWorkbench(void);
  191. void FreeWorkbench(void);
  192.  
  193. /* System library base pointers */
  194. extern struct Library *CxBase;
  195. extern struct Library *DOSBase;
  196. extern struct Library *GadToolsBase;
  197. extern struct Library *GfxBase;
  198. extern struct Library *IFFParseBase;
  199. extern struct IntuitionBase *IntuitionBase;
  200. extern struct Library *NIPCBase;
  201. extern struct Library *SysBase;
  202. extern struct Library *UtilityBase;
  203. extern struct Library *WorkbenchBase;
  204.  
  205. /* Global data */
  206. extern const struct TagItem HandlerProcessTags[];
  207. extern struct MsgPort *LibraryPort;
  208. extern struct MsgPort *DummyPort;
  209. extern struct MsgPort *IDCMPPort;
  210. extern struct MsgPort *TimerPort;
  211. extern struct MsgPort *AppMsgPort;
  212. extern struct MsgPort *BrokerPort;
  213. extern struct Entity  *LocalEntity;
  214. extern struct timerequest *deftimereq;
  215. extern struct TMHandle *PrivateTMHandle;
  216. extern CxObj *Broker;
  217. extern struct PathList *GlobalPath;
  218. extern BOOL Closing;
  219. extern struct NewBroker BrokerData;
  220. extern struct NewMenu DockMenu[];
  221. extern char ToolManagerName[];
  222. extern char PrefsFileName[];
  223. extern char DefaultNoName[];
  224. extern char DefaultDirName[];
  225. extern char DefaultOutput[];
  226. extern char DefaultPortName[];
  227.  
  228. /* Global defines */
  229. #define TMVERSION     "2.1"
  230. #define TMLIBREVISION 0
  231. #define TMCRYEAR      "1990-93"
  232.  
  233. #ifdef DEBUG
  234. __stkargs void kputs(char *);
  235. __stkargs char kgetc(void);
  236. __stkargs void kprintf(char *,...);
  237.  
  238. #define DEBUG_PUTSTR(a) kputs(a);
  239. #define DEBUG_GETCHR    kgetc();
  240. #define DEBUG_PRINTF(a,b)  kprintf(a,b);
  241. #else
  242. #define DEBUG_PUTSTR(a)
  243. #define DEBUG_GETCHR
  244. #define DEBUG_PRINTF(a,b)
  245. #endif
  246.